The invention relates generally to computer network systems, and in particular, to shared computer network input/output subsystems.
The Peripheral Component Interconnect (PCI), a local bus standard developed by Intel Corporation, has become the industry standard for providing all primary I/O functions for nearly all classes of computers and other peripheral devices. Some of the computers that employ the PCI architecture, for instance, range from a personal microcomputer (or desktop computer) at a lower entry-level to a server at an upper enterprise-level.
However, while virtually all aspects of the computer technology, such as a processor or memory, advanced dramatically, especially over the past decade, the PCI system architecture has not changed at the same pace. The current PCI system has become considerably outdated when compared to other components of today""s technology. This is especially true at the upper enterprise-level. For instance, the current PCI bus system employs a shared-bus concept, which means that all devices connected to the PCI bus system must share a specific amount of bandwidth. As more devices are added to the PCI bus system, the overall bandwidth afforded to each device decreases. Also, as the speed (i.e., MHz) of the PCI bus system is increased, the lesser number of devices can be added to the PCI bus system. In other words, a device connected to a PCI bus system indirectly affects the performance of other devices connected to that PCI bus system.
It should be apparent that the inherent limitation of the PCI system discussed above may not be feasible for meeting the demands of today""s enterprises. Many of today""s enterprises run distributed applications systems where it would be more appropriate to use an interconnection system that is independently scalable without impacting the existing performance of the current system. E-commerce applications that run in server cluster environments, for example, would benefit tremendously from an interconnection system that is independently scalable from the servers, networks, and other peripherals.
While the current PCI system generally servers the computing needs for many individuals using microcomputers, it does not adequately accommodate the computing needs of today""s enterprises. A poor bandwidth, reliability, and scalability, for instance, are just a few exemplary areas where the current PCI system needs to be addressed. There are other areas of concern for the current PCI system. For instance, I/Os on the bus are interrupt driven. This means that the processor is involved in all data transfers. Constant CPU interruptions decrease overall CPU performance, thereby decreasing much of the benefits of increased processor and memory speeds provided by today""s technology. For many enterprises that use a traditional network system, these issues become even more significant as the size of the computer network grows in order to meet the growing demands of many user""s computing needs.
To combat this situation, a new generation of I/O infrastructure called InfiniBand(trademark) has been introduced. InfiniBand(trademark) addresses the need to provide high-speed connectivity out of the server. It enhances the ability to transfer data better than today""s shared bus architectures. InfiniBand(trademark) architecture is a creation of the InfiniBand Trade Association (IBTA). The IBTA has released the specification, xe2x80x9cInfiniBand(trademark) Architecture Specificationxe2x80x9d, Volume 2, Release 1.0.a (Jun. 19, 2001), which is incorporated by reference herein.
Even with the advent of new technologies, such as InfiniBand(trademark), however, there are several areas of computing needs that still need to be addressed. One obvious area of computing needs involves an implementation of any new technology over an existing (or incumbent) system. For instance, installing a new infrastructure would necessitate acquiring new equipment to replace the existing equipment. Replacing the existing equipment is not only costly, but also disruptive to current operation of the enterprise.
This issue can be readily observed if one looks to a traditional network system that includes multiple servers where each server has its own dedicated input/output (I/O) subsystem. A typical dedicated I/O subsystem is generally based on the PCI local bus system and must be tightly bound to the processing complex (i.e., central processing unit) of the server. As the popularity of expansive networks (such as Local Area Network (LAN), Wide Area Network (WAN), InterProcess (IPC) Network, and even the Internet) grows, a typical server of a traditional network system needs to have the capacity to accommodate these network implementations without disrupting the current operation. That is, a typical server in today""s network environment must have an I/O subsystem that has the capacity to interconnect the server to these expansive network implementations. Note that while there are certain adapters (and/or controllers) that can be used to accommodate some of these new technologies over an existing network system, this arrangement may not be cost efficient.
FIG. 1A illustrates a prior art network configuration of a server having its own dedicated I/O subsystem. To support network interconnections to various networks such as Fibre Channel Storage Area Network (FC SAN) 120, Ethernet 110, or IPC Network 130, the server shown in FIG. 1A uses several adapters and controllers. The PCI local bus 20 of the server 5 connects various network connecting links including Network Interface Cards (or Network Interface Controllers) (NIC) 40 Host Bust Adapters (HBA) 50, and InterProcess Communications (IPC) adapters 30.
It should be apparent that, based on FIG. 1A, a dedicated I/O subsystem of today""s traditional server systems is very complex and inefficient. An additional dedicated I/O subsystem using the PCI local bus architecture is required every time a server is added to the existing network configuration. This limited scalability feature of the dedicated I/O subsystem architecture makes it very expensive and complex to expand as required by the growing demands of today""s enterprises. Also, adding new technologies over an existing network system via adapters and controllers can be very inefficient due to added density in a server, and cost of implementation.
Accordingly, it is believed that there is a need for providing a shareable, centralized I/O subsystem that accommodates multiple servers in a system. It is believed that there is a further need for providing an independently scalable interconnect system that supports multiple servers and other network implementations. It is believed that there is yet a further need for a system and method for increasing bandwidth and other performance for each server connected to a network system. It is also believed that there is a need for a system and method that provides a shareable, centralized I/O subsystem to an existing network configuration without disrupting the operation of the current infrastructure, and in a manner that complements the incumbent technologies.
The present invention is directed to a computer system that includes a plurality of servers, and a shared I/O subsystem coupled to each of the servers and to one or more I/O interfaces. The shared I/O subsystem services I/O requests made by two or more of the servers. Each I/O interface may couple to a network, appliance, or other device. The I/O requests serviced by the shared I/O subsystem may alternatively include software initiated or hardware initiated I/O requests. In one embodiment, different servers coupled to the shared I/O subsystem use different operating systems. In addition, in one embodiment, each I/O interface may be used by two or more servers.
In one embodiment, the servers are interconnected to the shared I/O subsystem by a high-speed, high-bandwidth, low-latency switching fabric. The switching fabric includes dedicated circuits, which allow the various servers to communicate with each other. In one embodiment, the switching fabric uses the InfiniBand protocol for communication. The shared I/O subsystem is preferably a scalable infrastructure that is scalable independently from the servers and/or the switching fabric.
In one embodiment, the shared I/O subsystem includes one or more I/O interface units. Each I/O interface unit preferably includes an I/O management unit that performs I/O functions such as a configuration function, a management function and a monitoring function, for the shared I/O subsystem.
The servers that are serviced by the shared I/O subsystem may be clustered to provide parallel processing, InterProcess Communications, load balancing or fault tolerant operation.
The present invention is also directed to a shared I/O subsystem that couples a plurality of computer systems to at least one shared I/O interface. The shared I/O subsystem includes a plurality of virtual I/O interfaces that are communicatively coupled to the computer systems where each of the computer systems includes a virtual adapter that communicates with one of the virtual I/O interfaces. The shared I/O subsystem further includes a forwarding function having a forwarding table that includes a plurality of entries corresponding to each of the virtual I/O interfaces. The forwarding function receives a first I/O packet from one of the virtual I/O interfaces and uses the forwarding table to direct the first I/O packet to at least one of a physical adapter associated with the at least one shared I/O interface and one or more of other ones of the virtual I/O interfaces. The forwarding function also receives a second I/O packet from the physical adapter and uses the forwarding table to direct the second I/O packet to one or more of the virtual I/O interfaces.
The present invention is also directed at a shared I/O subsystem for a plurality of computer systems where a plurality of virtual I/O interfaces are communicatively coupled to the computer systems. Each of the computer systems includes a virtual adapter that communicates with one of the virtual I/O interfaces. The shared I/O subsystem also includes a plurality of I/O interfaces and a forwarding function. The forwarding function includes a plurality of forwarding table entries that logically arrange the shared I/O subsystem into one or more logical switches. Each of the logical switches communicatively couples one or more of the virtual I/O interfaces to one of the I/O interfaces. A logical switch receives a first I/O packet from one of the virtual I/O interfaces and directs the first I/O packet to at least one of the I/O interface and one or more of other ones of the virtual I/O interfaces. A logical switch also receives a second I/O packet from the I/O interface and directs the second I/O packet to one or more of the virtual I/O interfaces.
The present invention is also directed to a shared I/O subsystem having a plurality of ports, where each of the ports includes a plurality of address bits and first and second masks associated therewith. The shared I/O subsystem receives a data packet from a first of the plurality of ports, selects from one or more tables the plurality of address bits and the first and second masks associated with the first port, applies an AND function to the address bits and the first mask associated with the first port, applies an OR function to the result of applying the AND function and the second mask associated with the first port, and selectively transmits the data packet to one or more of the ports in accordance with a result of applying the OR function.
The present invention is also directed to a shared I/O subsystem having a forwarding table and a plurality of I/O interfaces. The forwarding table has a plurality of entries that correspond to each of the I/O interfaces. The shared I/O subsystem receives a data packet from one of the I/O interfaces where the data packet includes a plurality of address bits, applies the address bits of the data-packet to the forwarding table, and discards the data packet if applying the address bits of the data packet to the forwarding table fails to result in identification of a valid destination.
The present invention is also directed to a shared I/O subsystem for a plurality of computer systems. The shared I/O subsystem includes a plurality of physical I/O interfaces and a plurality of virtual I/O interfaces where each of the computer systems is communicatively coupled to one or more of the virtual I/O interfaces. The shared I/O subsystem also includes a forwarding function having a forwarding table that logically arranges the shared I/O subsystem into one or more logical LAN switches. Each of the logical LAN switches communicatively couples one or more of the virtual I/O interfaces to at least one of the physical I/O interfaces. For each of the logical LAN switches, the forwarding function receives a data packet from any one from the group of the physical I/O interfaces and the virtual I/O interfaces, and directs the data packet to at least one from the group of the physical I/O interfaces and the virtual I/O interfaces. Two or more of the physical I/O interfaces may be aggregated to form a logical I/O interface by selectively altering entries in the forwarding table without reconfiguring the computer systems.
The present invention is also directed at a shared I/O subsystem for a plurality of computer systems. The shared I/O subsystem includes a plurality of ports that communicatively couple the computer systems to the shared I/O subsystem where each of the ports includes at least one corresponding bit in an adjustable span port register. Data packets arriving on the plurality of ports may be selectively provided to a span port based on a current state of the adjustable span port register.
The present invention is also directed to a shared I/O subsystem for providing network protocol management for a plurality of computer systems. The shared I/O subsystem includes a plurality of I/O interfaces where each of the I/O interfaces operatively couples one of the computer systems to the shared I/O subsystem. The shared I/O subsystem also includes an I/O management link that operatively interconnects the I/O interfaces, and a link layer switch that communicatively couples to each of the I/O interfaces. The link layer switch receives a data packet from one of the I/O interfaces and directs the data packet to one or more of the other ones of the I/O interfaces. The I/O interfaces may form a local area network within the shared I/O subsystem.
The present invention is also directed to a shared I/O subsystem that includes a plurality of I/O interfaces for coupling a plurality of computer systems where each of I/O interfaces communicatively couples one of the computer systems to the shared I/O subsystem. The shared I/O subsystem receives, at a first one of the I/O interfaces, a data packet from one of the computer systems coupled to the first one of the I/O interfaces where the data packet has a variable length, arranges, at the first one of the I/O interfaces, the data packet into an internal format where the internal format has a first portion that includes data bits and a second portion that includes control bits, receives the data packet in a buffer in the shared I/O subsystem where the second portion is received after the first portion, verifies, with the shared I/O subsystem, that the data packet has been completely received by the buffer by monitoring a memory bit aligned with a final bit in the second portion of the data packet, and transmits, in response to the verifying, the data packet to another one of the computer systems coupled to a second one of the I/O interfaces.
The present invention is also directed to a method and apparatus for subdividing a port of a 12xc3x97 connector that complies with the mechanical dimensions set forth in InfiniBand(trademark) Architecture Specification, Volume 2, Release 1.0.a. The connector connects to a module. At the module, signals received from the connector are subdivided into two or more ports that comply with the InfiniBand(trademark) Architecture Specification, Volume 2, Release 1.0.a.